git使用简记
Git是分布式的代码版本控制工具,当年linus为了管理好linux内核代码搞出来的东西。虽一直听说git合并代码很方便,但却没怎么用过,公司一直还在用svn来管理代码。
最近注册了个github账号,用来看源码,当然自己也要写一点,这里顺便把一些最基础的git命令记下来。
1. 创建本地版本库
创建新的代码库:git init
克隆现有代码库:git clone
Set up git设置提交的用户名和邮箱
git config --global user.name "snailding"
git config --global user.email ssdut2010@126.com
如果不设置个人信息,提交的信息将不会有更改者信息,这样会加大项目管理的难度。
2.修改项目文件
git add //将文件添加到暂存区
git status //查看当前工作目录状态
git rm //从暂存区删除文件
git commit -m "" //提交文件到本地代码库:
git diff //查看当前工作文件与暂存区文件的差异
若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用 git diff --cached 命令
git commit -a -m 'added new benchmarks' //暂存并同时提交到本地库
3. 创建密钥信息并在github上配置
ssh-keygen -t rsa -C "your_email@example.com" //生成密钥对
Enter passphrase (empty for no passphrase): [Type a passphrase] //输入密码(这个密码会在你提交项目时使用):
ssh-agent -s //配置ssh使用公私钥
将生成的公钥添加到github的管理后台中
4.提交代码到版本库
git remote add origin git@github.com:defnngj/demo.git
//如果你是第一次提交项目,这一句非常重要,这是你本地的当前的项目与远程的哪个仓库建立连接。
//origin可以改为别人的名字,但是在你下一次push(提交)时,也要用你修改之后的名字。
git remote -v //查看你当前项目远程连接的是哪个仓库地址
git push -u origin master // 将本地的项目提交到远程仓库中
git push -u origin master // 将本地的项目提交到远程仓库中
git push origin master //push到远程中的同名项目中
git pull origin master //远程代码库上的代码更新到本地:
git pull origin master //远程代码库上的代码更新到本地:
如果需要忽略某些文件,创建一个名为 .gitignore 并写入相应规则
5.分支的新建与合并
git checkout -b iss53 //新建并切换到该分支,即当前的 HEAD 指针正指向 iss53
相当于执行了:
git branch iss53
git checkout iss53
git checkout -b iss53 //新建并切换到该分支,即当前的 HEAD 指针正指向 iss53
相当于执行了:
git branch iss53
git checkout iss53
git checkout master //切换分支,切换到主分支
git checkout master //切回主分支,合并hotfix分支
git merge hotfix
git branch -d hotfix //删除hotfix分支
git checkout master //合并分支
git merge iss53
git status //看看哪些文件在合并时发生冲突,可以用git status查阅:
任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出
6.其他常见问题
提交代码是遇到冲突,拒绝提交
git pull remotetest master //抓取远程仓库中的文件,需要指定分支
查看冲突文件内容,冲突用<<<<<< ====== >>>>>>隔开冲突代码,上面的是当前修改内容,下面的则是别人修改的内容。
git add <filename> 修改冲突内容,重新提交,推送
假如本地已经存在了这个项目,而仓库中又有一新的更新,如何把更的合并到本地的项目中?
git fetch origin //取得远程更新,这里可以看做是准备要取了
git merge origin/master //把更新的内容合并到本地分支/master
git fetch origin //取得远程更新,这里可以看做是准备要取了
git merge origin/master //把更新的内容合并到本地分支/master
git 都会尝试去自动合并改动,但可能会产生冲突(conflicts)需要手动合并
git diff <source_branch> <target_branch> 查看不同版本的不同
git log //查看提交历史 -p显示内容不同 -3指定显示的个数
替换本地改动
git checkout -- <filename> //你替换掉本地改动,此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。
git fetch origin
git reset --hard origin/master
假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它
git checkout -- <filename> //你替换掉本地改动,此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。
git fetch origin
git reset --hard origin/master
假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它
git config --global core.autocrlf true //windows提交文件时自动设置换行转换
参考:
github使用git更新:https://github.com/peterluo/LearningPythonDiary/blob/master/1.How%20to%20use%20git.md
随时保持记录,保持总结,保持反思