一、git配置
Git学习 / Git分支管理策略 学习链接。
命令:git config --system 对应/etc/gitconfig文件,这是全局配置文件,修改这个文件将会影响系统上所有的用户和仓库;
git config --global 对应/.gitconfig文件,修改它会对当前用户的所有仓库产生影响。
git config 默认修改的配置文件,只会对当前仓库产生影响。
第一次使用git时需要:
git config --global user.name " "
git config --global user.email xxx@meituan.com
也可以制定编辑器,diff工具:
git config --global core.editor vim
git config --global merge.tool vimdiff
可以通过git config --list命令查看自己的设置。
git配置好后就可以从git服务器上获得仓库,或者向服务器提交代码。git支持四种与服务器端的通信协议:git(只读,只能获取仓库不可提交代码),http和https(用的很少),ssh。
当通过ssh协议与远端服务器进行通信时,可以通过指令 ssh-keygen -t rsa指令生成ssh密钥对,然后就会找到.ssh目录里有id_rsa和id_rsa.pub两个文件,id_rsa是私钥,id_rsa.pub是公钥可以告诉任何人。登陆stash->manage account->ssh keys->add key添加自己的公钥。
二、git 常用命令
1、初始化一个git仓库:git init
2、添加文件到git仓库:git add + git commit (可先add多个文件然后再一起commit)
git add把文件添加进去,实际上是把文件修改添加到暂存区;git commit提交更改,实际是把暂存区的所有内容提交
到当前分支。
3、查看工作区状态:git status
4、如果git status显示有文件修改过,若查看修改内容:git diff
5、HEAD指向的版本是当前版本,要进行版本回退使用命令:git reset --hard commit_id
6、在版本回退前可以查看提交历史,以便确定要回退到哪个版本:git log
7、查看命令历史可以确定要回到未来的哪个版本:git relog可以查看命令历史
8、撤销修改:(1)当修改了工作区某个文件的内容,想要直接丢弃工作区的修改:git checkout – file(git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区时修改还是删除,都可以一键还原)
(2)已将修改添加到了暂存区,想丢弃修改,分两步撤销修改,第一步git reset HEAD file就回到了(1)这种情况;然后
按照(1)操作
(3)若已经提交了不合适的修改到版本库时(没有推送到远程库),想要撤销本次提交,参考版本回退。
9、删除文件:在git中删除也是一个修改操作,一般通常在文件管理器中把没用的文件删了或者用rm命令删了。这个时候git知道删除了文件,因此工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了。现在有两个选择:一个是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit,现在文件就从版本库中被删除了;另一种情况是删错了,因为版本库里还有了,所以可以用git checkout --filename把误删的文件恢复到最新版本
10、要关联一个远程库,使用命令:git remote add origin git@server-name:path/repo-name.git;
关联后使用命令git push -u origin master第一次推送master分支的所有内容;此后,每次本地提交后,只要有必要,就可以是哟过git push origin master 推送最新修改。
11、克隆一个仓库:要想克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆
12、分支管理:查看分支:git branch; 创建分支: git branch 切换分支git checkout
创建+切换分支: git checkout -b <name>
合并某分支到当前分支: git merge <name> 当git无法自动合并分支时,就必须先解决冲突再提交,合并完成。合并分支时加上--no-ff参数就可以用普通模式合并,合并后的历史有分支能看出曾经做过合并,而fast forward 合并就看不出来曾经做过合并。
删除分支:git branch -d <name>
Git工作流程
git常用命令清单
git代码行统计命令集https://segmentfault.com/a/1190000002434755
浏览项目历史,查询指定提交内容,图形化显示分枝和合并: http://fsjoy.blog.51cto.com/318484/245261
http://smilejay.com/2012/08/git-commit-sha-1/
在Git中,每个commit ID的信息(如cc127537978af35e2f502da7e8d22e340ed810e5)就是一个SHA-1 Hash值,它是对那个commit是Git仓库中内容和头信息(Header)的一个校验和(checksum)。Linux kernel开创者和Git的开发者——Linus说,Git使用了SHA-1并非是为了安全性,而是为了数据的完整性;它可以保证,在很多年后,你重新checkout某个commit时,一定是它多年前的当时的状态,完全一摸一样,完全值得信任。
在Git中,根据commit的SHA-1值(40个十六进制数字)进行了简单的划分目录,以前2位数字作为目录名,其下面是剩余38位数字组成的一个文件名,以我的一个backup.git代码仓库为例,演示如下。
一、基本命令(可参考GitQuickStart)
1.克隆代码库
git clone ssh://git@git.sankuai.com/web/www.git # 其中www是要克隆的版本库,其它如mining, stat, mtpay等。美团的代码库暂时不是全开放的,需要申请访问权限。
2.更新代码库到最新版
git pull
3.提交代码到本地仓库
git add template/deal/default.php # 添加文件到暂存区
git commit -m “update deal ui”
4.推送到远程仓库
git pull # 更新代码库到最新版本
git push # 开始推送
git push origin master # 对新建远程仓库的第一次推送,需要指定主分支名master
5.缓存取得操作
git add template/deal/default.php # 提交文件到暂存区
git reset HEAD template/deal/default.php # 删除暂存区中的文件
二、关联远程库相关命令:
1.在本地目录下关联远程repository :
git remote add origin git@github.com:git_username/repository_name.git(远程仓库地址)
2.取消本地目录下关联的远程库:
git remote remove origin
三、分支相关命令:
1.查看远程本地分支:
git branch
2.查看远程分支:
git branch -r
3.查看所有分支(本地和远程):
git branch -a
4.创建分支test:
git branch test
5.切换本地分支到test
git checkout test
6.把本地分支test推到远程分支test(同时创建了远程分支test)
git add --all
git push origin test
7.删除本地分支test
git branch -d test
8.拉取远程分支并创建本地分支
git checkout -b 本地分支名x origin/远程分支名x
9.删除远程分支
git branch -r -d origin/branch-name
git push origin :branch-name
10.发现refusing to merge unrelated histories,无法pull;
因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码,在git pull,这句代码是在git 2.9.2版本发生的,最新的版本需要添加–allow-unrelated-histories
git pull origin master --allow-unrelated-histories
11.强制提交到远程master分支
git push -u origin master -f
三、对新建立的仓库上传最新的代码或分支
git clone git@github.com:git_username/repository_name.git(远程仓库地址)
cd existing-project
git init
git add --all (上传最新的代码,记得一定要有.gitignore)
git commit -m “Initial repos”
git remote add origin git@github.com:git_username/repository_name.git(远程仓库地址)
git push origin master
四、在使用Git的时候我们有时候需要忽略一些文件或者文件夹。我们一般在仓库的根目录创建.gitignore文件
在提交之前,修改.gitignore文件,添加需要忽略的文件。然后再做add commit push 等
但是有时在使用过称中,需要对.gitignore文件进行再次的修改。这次我们需要清除一下缓存cache,才能是.gitignore 生效。
具体做法:
[plain] view plain copy
git rm -r --cached . #清除缓存
git add . #重新trace file
git commit -m “update .gitignore” #提交和注释
git push origin master #可选,如果需要同步到remote上的话
这样就能够使修改后的.gitignore生效。
五、参考学习文档如下:教你学会Git