将更新后的文件修改提交
- 使用git status查看哪些文件发生了修改,如果需要看具体的修改内容可以用git dif <file>
- 使用git add <file1>, git add <file2>...将需要提交的文件添加到仓库,若提交所有的文件到仓库可使用git add.
- 使用git commit -m " "将修改提交," "内填写本次提交的说明
版本回退
- 使用git log查看每次的提交或使用git log --pretty=oneline查看版本号和提交说明
- 使用git reset --hard HEAD^ 进行回退,^ 的个数为回退的版本数,后面可以直接跟数字,如:^^^^^ 和^5都表示回退5个版本
- 也可以用git reset --hard + 版本号进行回退
版本回退后的恢复
- 使用git reflog查看之前的操作,找到版本回退操作中显示的之前的版本号
- 使用git reset --hard + 需要恢复的版本号就能进行恢复
撤销没有提交的修改
- 如果文件没有提交到暂存区,本地修改了但是想回退或者是本地误删了文件,使用git checkout -- <file>
- 如果文件提交到了暂存区,本地又做了修改,想恢复到暂存区的状态,也使用git checkout -- <file>
- 如果文件提交到了暂存区,想丢弃该暂存区中的修改,使用git reset HEAD <file>
文件的删除
若本地工作区删除了一个文件,希望版本库中该文件也同步删除,则先git rm <file>,再git commit -m " "
创建一个新的分支,对项目修改后合并分支
- 使用git checkout -b newbranch创建一个新的分支并切换到该分支上
- 对项目进行修改,并使用git add和git commit将工作区中的内容更新到版本库中
- 使用git checkout master切换到master分支上,再用git merge newbranch将newbranch分支中的更新到master分支上
- 使用git branch -d newbranch删除分支newbranch
建议:每当需要写一个新的功能时,先在一个新的分支上操作,最后再合并到master中
冲突解决
当分支合并的时候可能会出现冲突,显示Automatic merge failed; fix conflicts and then commit the result.使用git status可以查看出现冲突的文件,此时可以打开该文件,文件中会显示冲突的位置以及分支的不同语句,此时可以自行修改,解决完冲突后再重新git add和git commit
从未提交的分支切换到另一个分支后再回来
- 使用git stash暂时保存当前的工作区
- 使用git checkout + 分支名切换到另一个分支,修改后使用git add,git commit(,git merge)进行提交(及合并)
- 使用git checkout + 原来分支名切换回原来的分支,使用git stash list查看需要恢复的工作区,然后使用git stash pop恢复该工作区并删除stash中的内容
在远程库上实现多人开发
- 使用git clone获取远程库,此时只能获取到master分支。注意:需要配置SSH key后才能共同协作
- 建立新的分支,创建远程库分支对用的新分支,最好取相同的名字:git checkout -b branch-name origin/branch-name
- 注意:此时远程库中需要有该分支,否则在本地创建会出错。若此时远程库中只有origin分支,可先用git push origin dev生成一个新的dev分支
- 建立本地分支和远程分支的关联:git branch --set-upstream-to=origin/branch-name branch-name
本地的文件修改后,推送到远程库
- 先用git add <file>将文件添加到暂存区
- 再用git commit -m " "提交修改到版本库
- 使用git pull抓取远程最新的分支,如果有冲突,解决冲突,解决完冲突后需要重新git commit。
注意:如果此时远程库并没有更新的内容会提示Already up to date. 并不需要再解决冲突 - 最后用git push origin branch-namer将文件推送到远程库,这里推送到的是远程库关联的分支
远程库分支的合并
需要远程库管理员的操作
- git clone把远程的master分支克隆到本地
- git checkout -b branch-name origin/branch-name建立本地分支
- 建立本地分支和远程分支的关联:git branch --set-upstream-to=origin/branch-name branch-name,并git pull得到最新的内容
- 切换为master分支,并用git merge合并分支
- git push origin master进行合并
在提交的时候选择某些文件不提交
如果在使用git中某些文件需要存在但却又不能提交时,可以在git的根目录下建立一个.gitignore文件,然后把需要忽略的文件名填进去,然后把.gitignore文件提交
一般忽略的文件有:
- 操作系统自动生成的文件
- 编译生成的中间文件、可执行文件
- 带有敏感信息的配置文件
github上给出了一些.gitignore文件的配置:.gitignore配置
被忽略的文件将不会被添加,若强行添加,可以使用git add -f <file>