赞
踩
user
信息配置user.name
git config --global user.name 'your_name'
配置user.email
git config --global user.email 'your_email'
查看所有配置信息,缺省等同于local
git config --local -l
只对某个仓库有效git config --global -l
对当前用户所有仓库有效git config --system -l
对系统所有登录的用户有效git config 属性名
查看某一项配置 如:git config user.name
Git
管理
cd
项目代码所在的文件夹git init
Git
管理
cd
某个文件夹git init your_project
会在当前路径下创建和项目名称同名的文件夹cd your_project
git status
查看当前状态,可以看到有哪些文件需要修改
git add file_name
将工作目录下的某个文件添加到暂存区中
git add --all
git add .
将工作目录下的所有文件添加到暂存区中
git commit -m'statement'
将暂存区的文件提交到版本历史中,statement
为备注,-m
及之后的内容可要可不要。
git commit -am'statement'
可以不经过暂存区,直接将工作目录中的文件提交到版本历史中(不推荐)。
git commit --amend
对最近一次commit
的message
(上面的statement
)做变更
直接手动修改工作目录下的文件名时,在git
里会出现先delete
再add
的记录,通过以下命令快速修改并且不需要手动再add
。
git mv old_file_name new_file_name
HEAD
:头指针,一般指针当前分支(分离头指针状态下不指向任何分支)。
git branch -v
查看本地所有的分支, -v
可以省略不写(查看分支时*
指向当前所在的分支)
git branch -a
查看所有本地和远程分支
git branch -r
查看所有的远程分支
git branch -vv
查看本地分支与远程分支的联系
git branch branch_name
创建一个新分支,但是不会自动切换到该分支上
git checkout branch_name
切换到某个分支上
git checkout -b branch_name
在当前分支基础上创建一个新分支,并切换到该分支上
git checkout -b branch_name1 branch_name2
在branch_name2的基础创建一个新分支并切换到该分支上
git branch -m old_branch_name new_branch_name
修改分支名
git push origin --delete origin_branch_name
删除一个远程分支
git merge branch_name
将branch_name
分支合并到当前分支
git branch -d branch_name
删除某个分支,如果该分支的提交未被保存到其他分支上,会提示错误信息
如果确实不想要该分支上的内容的话,可以使用git branch -D branch_name
强制删除该分支。
git log
查看版本演变历史git log
查看所有的提交记录,q
键退出查看log
。git log
之后添加下面参数(每次可添加多个,顺序任意)-n1
(n
可以省略)查看最近提交的一次记录,改变数字可以查看不同数量的提交记录。--onelie
每次提交的记录只显示一行--graph
用图形的形式显示提交记录,最好和--oneline
参数一起使用--all
查看所有分支的提交历史hash
值对应的object
类型和内容find .git/objects -type p
查看该项目版本历史中创建的所有对象
git cat-file -t hash_value
查看对应hash
值的对象类型,如commit
、tree
(文件夹,文件夹下面可以有文件夹和文件)、blob
(文件)
git cat-file -p hash_value
查看对应hash
值的内容,如果当前hash
值为commit
类型,则显示该commit
的相关信息
hash
值为tree
类型则可以查看该tree
下面所有的tree
和blob
(如果文件的内容相同,不管文件名是否相同,hash
值均相同,为了节省空间)hash
值为blob
类型,使用该命令可以查看文件的内容(有些二进制格式存储的文件不能查看,如图片)使用git checkout commit_hash
切换到某一次commit
历史的时候,这个时候不属于任何分支(HEAD
指针没有指向任何分支),所以叫分离头指针状态(detached HEAD state)
在此状态下,可以像正常情况下在该commit
的基础上做各种修改,如果不想保存的话,直接切换到任意分支即可,git
在之后很可能会将此状态下的东西当做垃圾清理掉。所以想保存修改的话,可以将此次修改绑定到一个新的分支上即可,一般没有绑定而直接切换到其他分支的时候,git
也会提醒我们。
git reset HEAD
恢复所有的文件git reset HEAD file_name
恢复某个文件git checkout -- file_name
git reset --hard commit_hash
这样会丢失此次提交之后的commit
,谨慎使用
git reset --soft commit_hash
不会丢失此次提交之后的commit
git diff HEAD HEAD~n
比较此次提交和第前n次提交的差别
git diff branch_name1 branch_name2
比较分支1和分支2的差异
git diff commit_hash1 commit hash2
比较提交1和提交2 的差异
如果想知道具体某个文件的差异 ,可以加上 -- file_name
git rm file_name
删除文件并将此次操作提交到暂存区
git stash
git stash list
查看栈中保存了哪些状态
git stash apply
回到栈顶的状态
git stash pop
回到栈顶的状态并将栈顶出栈
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
输入后一路回车。然后在C:\Users\user\.ssh
下可以看见:
然后将公钥的内容复制粘贴到Github
或你需要连接的服务器上
git remote add origin ssh_url
建立连接,并将远程库取名为origin
git push origin --all
将本地所有分支都push
到远程库,可以会出现冲突
git push origin branch_name
将本地当前分支推送到远程库某个分支,可以会出现冲突
git fetch ssh_url branch_name
先将远端分支拉到本地,ssh_url
可以替换为https_url
git merge --allow-unrelated-histories origin/branch_name
将本地分支与拉下来的远程分支进行merge
,因为此时这两个分支没有任何关联,所以需要加上--allow-unrelated-histories
git push origin branch_name
最后再将此分支推送到远程库
git push
后发现被拒绝
git fetch <远程主机名>
将远程主机上所有分支的更新拉取到本地git fetch <远程主机名> <分支名>
将远程主机上的某个分支拉取到本地fetch
完会返回一个FETCH_HEAD
指针 ,指的是某个branch
在服务器上的最新状态git merge FETCH_HEAD
将拉取的分支合并到当前分支git pull
相当于将1
中多个步骤合并为一个步骤,1
中的fetch
步骤可以先拉取到本地,然后用户可以再检查了以后决定是否合并(merge
)到工作本机分支中git push
后发现被拒绝
git pull
拉取最新代码发现出现冲突
打开出现冲突的文件,选择需要保存的内容,删掉git帮我们区分的信息(<<<<HEAD
,======
, >>>>64xx
)
然后将此文件add
之后再commit
,从而解决了冲突问题。
开出现冲突的文件,选择需要保存的内容,删掉git帮我们区分的信息(<<<<HEAD
,======
, >>>>64xx
)
然后将此文件add
之后再commit
,从而解决了冲突问题。
直接git pull
,git
会非常智能的帮我们合并
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。