一、获取 Git 仓库
有两种方式可以获取 git 仓库,一种是在现有的项目或者目录下将所有文件导入到 git 中,另一种是从服务器上克隆一个现有的 git 仓库。
1、第一种方式
git init
下面是实际的操作:
但是这样只是建立了一个本地的仓库,现在要将建立一个远程的仓库,并将本地和远程的仓库连接起来。
git remote add origin url
git remote -v
git push -u origin master
此时刷新 github 页面可以看到已将本地和远程仓库连接起来,还可以看到有一次 commit 以及 push 到远程的文件:
第一种方式适用于你想要用 git 仓库来管理你本地的项目或者文件。
2、第二种方式
git clone url
复制已有的 git 仓库的链接,使用 git clone url 命令将远程仓库克隆到本地。
第二种方式适用于你想要获取一个已经存在的 git 仓库的拷贝。
二、上传本地修改
git add file
添加所有修改可以用 git add .
git commit -m "commit description"
git push
完整的写法:git push remoteName branchName
git push origin master
可以使用 git status 来查看状态
修改之前 file.txt 文件的内容:
进行的操作:
修改之后 file.txt 文件的内容:
三、查看 commit 记录
git log
github 中显示的 commit 记录:
使用 git log 命令:
commit 后面跟着的是 commit id,可以用于版本回退。
四、版本回退
回退到上 n 个版本:git reset --hard HEAD~n
回退到某个指定的版本:git reset --hard commit id
五、解决冲突
git merge
一般项目会由多人合作,也就会出现冲突的情况。一般冲突分为两种,一种是 A 对 a 文件修改,B 对 b 文件修改,另一种是 A 和 B 都对 file 文件进行修改。
1、A 对 a 文件修改,B 对 b 文件修改
远程模拟 A 对 a 文件进行修改,A 新增文件 a 且输入一些内容,实际情况下最好不要在 github 上直接进行操作:
本地新建文件 b 并输入内容提交:
在进行完 add 和 commit 操作之后,如果直接进行 push 操作是会报错,提示你需要先 git pull,将远程文件先拉取下来,然后才能进行 push 操作。
git pull 之后会自动的进行 merge:
2、A 和 B 都对 file 文件进行修改
还是在 github 上模拟 A 对文件 file 的修改:
在本地 B 对 file 文件进行修改:
同样的在 push 操作之前要先进行 pull 操作,但是这个时候不会自动的解决冲突,而是要手动的解决冲突,解决冲突完之后才能 push 到远程。
解决冲突完之后重新 commit,然后 push 到远程:
六、分支的使用
1、建立分支
新建分支:git branch branchName
切换分支:git checkout branchName
新建分支并切换到该分支:git checkout -b branchName
查看当前所有分支及当前所在的分支:git branch
2、暂存
保存当前进度:git stash
显示保存进度的列表:git stash list
恢复最新的进度到工作区:git stash pop
建立了分支之后,我们在一个分支上进行工作,工作到一半的时候有人反馈了一个问题需要你立刻解决,但是新的工作进行到一半也不方便 commit,此时可以使用 git stash 命令将当前分支的工作暂时保存起来,等到解决完其他的问题之后再切回来继续进行工作。
- 首先我们切换到 first 分支进行一些操作:
我们新建一个 stash.txt 的文件,并写入了一些内容,但是此时 master 分支上需要我们去做一些工作,我们可以将 first 分支当前的工作暂存起来,使用 git status 命令可以看到,工作树是干净的。
- 然后我们切换到 master 分支上进行工作:
- 最后我们切回 first 分支,恢复最新的进度到工作区,继续进行原来的工作:
3、合并分支
git merge branchName
git rebase branchName
-
git merge
切回到 master 分支上,将 first 分支合并到 master 上:
使用 git log 查看 commit 记录,会发现有一条很不规范的 commit 记录:
但是同时 git merge 保存了详细的合并信息,当需要保留详细的合并信息的时候建议使用 git merge。
-
git rebase
然后我们分别再在两个分支上进行修改,使用 git rebase 进行合并,查看 commit 的记录:
可以看到,使用 git rebase 合并分支不会出现不规范的 commit 记录,但是不会保留详细的 merge 信息,当很多的提交信息没有必要时,可以尝试 git rebase。
4、删除分支
git branch -d branchName
分支合并到 master 分支上之后,它的作用也就达到了,我们可以将它删掉,不然会残留许多无用的分支。
七、不需要追踪某些文件
1、永久不追踪
修改 .gitignore 文件,在 git 中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改 .gitignore 文件的方法。
2、add 之后,取消追踪某个文件 / 文件夹
git rm --cached filename
git rm -r --cached foldername