赞
踩
git clone -b dev git@github.com:smallYellowCat/ljj.git
git clone -b dev 1.0.0 git@github.com:smallYellowCat/ljj.git
git fetch remote_repository_index branch:branch
//举例, 如下命令会拉取origin仓的dev分支到本地,创建同名dev分支。
git fetch origin dev:dev
//也可直接checkout, 注意拉取的远程仓库的分支在本地已经fetch到最新状态
git checkout -b xxx repository_index/xxx
//查看所有的配置以及它们所在的文件
git config --list --show-origin
//查看某一个全局变量的值, varibal_name就是变量名,可以通过上面的命令查找
git config --global varibal_name
//设置全局变量
git config --global varibal_name "varibal_value" //参数值有没有引号看具体的变量
git push <remote> <local_branch>:<remote_branch>
//推送当前分支到远端指定分支
git push <remote> head:<remote_branch_name>
//例如推送当前分支到远端dpw分支
git push origin head:dpw
git clone --recurse-submodules 仓库地址XXX
新建完项目之后(添加忽略文件)按照如下步骤执行
1. git init
2. git add .
3. git commit –m “xxxx”
4. git remote add origin remote_address
5. git push –u origin master
//一次性在本地新建了分支并且切换到了新建的分支上,而且新分支和远程分支已经关联
git checkout –b branch_name
//创建远程分支
git push origin branch_name
//关联
git branch - -set-upstream-to=remote/branch branch_name
//查看本地分支
git branch
//查看远程分支
git branch –r
//查看本地和远程分支
git branch –a
//删除本地分支
git branch –d branch_name
//删除远程分支
git push origin --delete 分支名
//回退本地分支到指定版本,保留本地修改
git reflog //查看提交记录
git reset --soft versin_num //回退到指定版本号
//回退远程分支
//首先回退本地分支,然后强制推送到远程
git push -f
git remote [remove|add] origin [remote_address]
1. 删除关联
git remote remove origin
2. 增加关联
git remote add origin git@github.com:smallYellowCat/ljj.git
场景: A分支合并到B分支
git checkout A
git merge B
//分支合并完成,如果需要push到远程即可
git checkout A
git rebase B
注意: 此时合并完成之后B的提交记录在A上依然存在(是B的记录的副本)
说明: 首先git本身是不支持文件夹级别的合并的,对于指定文件夹合并的操作是通过其他途径来完成的。
场景: A 分支需要合并B分支的view文件夹下的所有文件
// 1. 如果是要对A分支进行全覆盖那么直接进行下面的操作 git checkout A //cd 到要合并的文件目录下, 下面的命令会对A分支的view文件夹下的文件做全覆盖 //xx代表** git checkout B ./view/xx //2. 如果A分支和B分支都有修改,且合并操作需要保留两者的修改(类似正常的merge) git checkout A //创建A分支的临时分支 git checkout -b A_temp //对A分支的临时分支的view文件进行全覆盖 // cd 到view文件夹 //xx代表** git checkout B ./view/xx //对A分支和A的临时分支进行合并 git checkout A git merge A_tem
示例:指定文件合并–将xxx-develop分支的YarnClientUtil合并到master的YarnClientUtil
Git合并或者其他操作发生冲突后,都要先解决冲突然后重新add,commit,最后push上去。
首先使用git reflog查看提交的版本号
然后选择要回退到的版本号进行git reset --hard 版本号命令
//比较工作区与暂存区,不加参数
git diff
//比较两个分支的不同
git diff branchA branch
//比较暂存与本地最新版本库
git diff --cached branchName
//比较工作区与本地最新版本库
git diff HEAD branchName (如果HEAD指向master分支那么head可以换成master)
//其他的比较都类似,只要提供两个要比较的分支或者版本号即可。
适用场景:一些共用的配置文件,但是每个人又有自己的本地配置,这时候需要以下命令
git update-index --assume-unchanged [file-path]
其中file-path为要忽略提交的文件路径。如果想恢复提交,使用如下命令:
git update-index --no-assume-unchanged [file-path]
命令格式:git reset [--hard|soft|mixed|merge|keep] 版本号或者HEAD~数字 hard:删除工作空间的改动,放弃commit,放弃add,代码会回到你指定的一次commit之前的状态(注意你的修改会被删除,当然也不用担心,因为git永远有后悔药可以吃) 示例:git reset --hard HEAD~1 或者 git reset --hard 8553b14 这里的数字1代表是第2此commit时的代码,注意是从0开始计算的。8553b14代表的是版本号,可以使用git reflog命令查看所有的版本号。 soft: 不删除工作空间改动代码,撤销commit,不撤销git add mixed: 这是一个默认的参数,不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。 git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的 另外两个摘抄官方文档原文如下(没有验证过,不做翻译) --merge Resets the index and updates the files in the working tree that are different between <commit> and HEAD, but keeps those which are different between the index and working tree (i.e. which have changes which have not been added). If a file that is different between <commit> and the index has unstaged changes, reset is aborted. In other words, --merge does something like a git read-tree -u -m <commit>, but carries forward unmerged index entries. --keep Resets index entries and updates files in the working tree that are different between <commit> and HEAD. If a file that is different between <commit> and HEAD has local changes, reset is aborted.
在配置完ssh key之后使用ssh协议clone下来的库才能保证以后进行pull或者push等操作不用输入用户名和密码。
在初始化git版本库之后会生成一个隐藏的文件 .git ,可以将该文件理解为git的版本库 repository,而我们自己建立的项目文件夹即工作区 working directory ,在.git 文件夹里面还有很多文件,其中有一个index 文件 就是暂存区也可以叫做 stage ,git还为我们自动生成了一个分
支master以及指向该分支的指针head ,如下图
从图中可以看出来respository包括分支master和stage, working diretory 可以理解为我们打开开发环境如eclipse,里面的内容即工作区的内容,
在工作区里面有的代码以及配置文件等我们需要提交到版本库里面,最终是到了分支master上面,暂存区只是一个临时保存修改文件的地方。
像其他版本控制系统(VCS)一样,Git 可以给历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 等等)
//打标签 git tag -a 标签名 -m "注释" //查看标签 git tag // 推送本地标签到远程 git push origin 标签名 //一次提交所有tag git push origin --tags //删除本地标签 git tag -d 标签名 //删除远程标签 //方法1 git push origin :refs/tags/标签名 //方法2 git push origin --delete 标签名 //针对指定的一次提交打标签 //查看提交 git log --pretty=oneline //针对某次提交打标签 git tag -a 标签名 提交的版本号
//重命名本地分支
git branch -m oldBranch newBranch
//删除远程分支
git push --delete origin oldBranch
//推送重命名后的分支
git push origin newBranch
git check-ignore -v csearch-web.zip
创建新的提交来替换当前分支上最近一次的提交。比如你一开始commit到了本地仓库,后来觉得可能提交信息描述不对,或者说你想让远程仓库的提交信息只显示一条, 那么你可以使用该命令。
如下, 示例,发起了三次commit,但是最后两次都是加了 --amend选项,所以远程仓库只能看到一条提交。
//第一次
git commit -m "the first commit"
//第二次
git commit --amend
//第三次
git commit --amend
//注意,上面两次git commit --amend的时间还是第一次的提交时间,所以如果需要修改时间未当前的时间可以使用以下方法
git commit --amend --date="xxxxxxx"
由于时间格式写起来比较繁琐,我们继续看下面的命令,在git的命令行中输入 date -R, 我们可以得到如下结果:
//然后我们可以直接使用此命令的输出来替换--date中的时间字符串即可
git commit --amend --date="$(date -R)"
git revert用来取消某一个或者某几个提交,不会影响其他的提交。什么意思呢?
假设你有三个提交 commit1, commit2, commit3;然后你执行git revert commit2 或者 git revert HEAD^1(效果一样);此时你的提交就只剩下commit1,commit3;注意commit3还在,这就是git revert和git reset的不一样的地方, git reset会将所有的提交都退回到你的暂存区,也就是说假设你执行git reset --soft commit2, 此时的你的提交记录就只剩下commit1了。因此一般情况下都推荐使用revert。
git revert是通过一个新的commit来抵消掉你要revert掉的commit,默认情况下自动发起commit,你可以通过-n参数来指定手动commit。
// 修改提交者为自己
git commit --amend --reset-author
// 修改提交者为任意人, 注意邮箱信息是必填
git commit --amend --author="xxxxx <aaaa@aaa.com>"
//解决办法, 执行以下命令,全局生效, 如若只想对本库生效,去掉--global参数
git config --global core.longpaths true
//通过命令查看本地的分支的追踪情况,可以看到有stale(陈旧,腐败)的分支
git remote show origin
//通过prune命令来删除
//用法 git remote prune [<options>] <name>
git remote prune origin
//或者使用以下命令解决
git pull -p
//或者
git fetch -p
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。