一、本地仓库操作
配置身份:
git config --global user.name "SkyZhang007"
git config --global user.email "zk827083320@qq.com"
查看当前用户身份:
将上方代码后面的用户名和邮箱删掉即可查询。
创建仓库:
- cd到你要创建仓库的项目的目录下,比如
cd D:/Doc/ASWorkspace/ActivitySkipTest
- 输入命令
git init
。这样会在该目录下生成一个隐藏的.git文件夹,用来记录所有git操作。如果想删除本地仓库,删除这个文件夹即可。
添加本地代码到本地仓库,add只是添加到暂存区,commit才是提交到本地仓库:
- 添加某个文件
git add build.gradle
- 添加某个目录
git add app
- 添加所有文件
git add .
- 提交代码到本地仓库
git commit -m "First commit"
- commit 的 -m 后面必须添加信息描述,不然会被认为不合法。
忽略文件
项目的目录下git init之后会自动生成一个.gitignore文件,它记录和说明了在上传到git仓库过程中不需要上传的文件。
通配符*表示所有这个类型的文件都不会提交,例如上图的.iml文件都不会提交。其它的标记的一些文件和目录不会提交。
再来看app文件夹下的.gitignore,新建的默认只有一个
/build
目录,表示这个文件夹忽略掉。如果想增加忽略文件夹,可以手动添加。比如/src/test
就可以忽略src文件夹下的test文件夹下的所有内容。查看修改内容
- 查看文件修改情况
git status
:这个命令可以查看上次提交之后本地文件修改情况; - 查看文件修改的内容
git diff
; - 如果想查看某个文件具体的修改内容,可以这么来输命令:
git diff app/src/main/java/com/sky/activityskiptest/MainActivity.java
输出结果减号代表删除的部分,加号代表添加的部分。
例:上次提交(commit -m"xxx")之后,我在MainActivity添加了一行参数
...
intent.putExtra("data",5);
...
然后输入git status
查看输出结果,红色文字表示有两个文件被修改了并且未add到暂存区,绿色代表已修改并add过了,MainActivity.java被修改是正常的。看图可以发现.idea/workspace.xml文件也被修改了,但是我的.gitignore文件已经声明忽略这个文件了。查了下发现我先add了所有文件,又去copy的.gitignore,所以它的.gitignore不起作用了。使用git rm --cached .idea/workspace.xml
来把这个文件移出暂存区,就不会再提示它的更新了。
接下来看MainActivity已经被修改了,如果想看具体的修改内容,可以在git里复制MainActivity的路径,然后输入命令
git diff app/src/main/java/com/sky/activityskiptest/MainActivity.java
看结果:
很明显地看到绿绿的,左边有个+号,表示是我们新增的行数。要理解现在的所有文件对比都是跟上次提交之后做对比,如果把新增的这行删掉,就会提示没有什么更新。
撤销修改
- 在文件add到暂存区之前:
git checkout
可以撤销修改。
例如git checkout app/src/main/java/com/sky/activityskiptest/MainActivity.java
撤销MainActivity.java。
- 文件add到暂存区之后:先
git reset
移出暂存区,再使用git checkout
来撤销修改。
例如:git reset HEAD app/src/main/java/com/sky/activityskiptest/MainActivity.java
HEAD表示git自建分支master的一个指针。然后再使用上方的撤销。
查看Git记录
- 查看log:
git log
黄色的一串代表Log的ID,其余都是记录的一些信息,最下方是commit提交时输入的记录。
- 查询某条记录:
git log 5986f43107a08211094924a950439ff50d8a91c7 -1
-1表示只看一条log。 - 查询某条记录具体修改内容:
git log 5986f43107a08211094924a950439ff50d8a91c7 -1 -p
分支:
简单的说,发布1.0版本的时候新建分支,发布之后不管他然后切换到主分支做1.1版本。
1.0出现bug需要修改就切到1.0去修改,修好后发布并及时合并到主分支。
1.1做好以后需要发布,1.0的bug也修复了代码也是最新的,直接发布就好。
分支相关命令:
- 查看所有分支:
git branch
- 创建分支:
git branch XXX
(e.g.:Version1.0) - 切换分支:
git checkout XXX
- 合并分支:首先切换到master分支
git checkout master
然后git merge XXX
就可以把XXX分支上的内容合并到master分支上。 - 删除分支:
git branch -D XXX
Tips:
- 查看分支时前面有个 * 并且字体是绿色的代表当前分支;
- 无法删除你当前所使用的分支。
二、远程版本库操作(Github等)
- 克隆远程版本项目:
git clone ...
如果我想从github克隆一个项目到本地,先cd到想保存到的目录,比如cd D:/Doc/ASWorkspace
然后再git clone https://github.com/SkyZhang007/coolweathertest.git
后面的url是github上面复制来的Path。
- 更新本地代码同步到远程版本:
git push origin master
origin 表示推送到远程版本,master是远程版本的分支。 - 远程版本的修改同步到本地:
git fetch origin master
这个命令表示同步远程代码并单独保存到本地的origin/master分支上,git diff origin/master
可以查看远程版本修改的内容。最后使用git merge origin/master
将刚刚同步来的代码合并到本地的当前分支中。 - 同步到本地后直接合并:
git pull origin master
这个命令直接做了两个上方fetch和merge的事情。
三、本地项目上传到GitHub
3.1 GitHub注册并创建项目
Sign up for GitHub来注册并创建账户,接下来可以选择个人(免费)、私有(收费)计划。再接下来会让你填个问卷,跳过就行。
接下来就可以创建一个新的repository(代码仓库)了,看图:
**填入项目Name,以及Description(介绍),勾选 Initialize this repository with a README(创建一个README项目介绍文件),选择一个license(许可证),这里选Apache License2.0就行。点击Create就可以看到自动生成的LICENSE和README.md文件还有仓库的git地址了。
3.2 本地项目上传
- cd到本地项目目录,本地的项目init、add、并且commit之后,就可以准备上传了。
- Copy一下刚才GitHub创建的仓库的地址,命令
git remote add origin https://github.com/SkyZhang007/ActivitySkipTest.git
将本地的项目与git仓库作关联。 - 重要:命令
git pull --rebase origin master
貌似是与远程仓库作合并和协调。 - 执行
git push -u origin master
将本地代码push到GitHub。然而我用git push origin master
也可以,不知道有啥大区别没。这个过程会让你输入GitHub的账号和密码,忽然蹦出来的图像化对话框感觉好感动...输入账号密码即可。然后等一会儿吧,这个过程可能比较慢。
出现类似上述页面并可以继续输入命令行表示成功了,以后再更新的话只需要add. commit 再 git push origin master就可以了。
参考资料: