Git常用操作
目录
前期准备
下载并安装Git
- linux
sudo apt-get install git
- win
下载应用程序,安装即可
设置用户名和email地址
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
创建版本库(本地)
初始化当前目录为Git仓库(本地)
//进入指定目录下
git init
add 并 commit 文件
git add readme.txt
//添加所有新增,或者有改动的文件
//git add .
git commit -m "wrote a readme file"
本地相关命令
git init
git add readme.txt
git add .
git commit -m "备注"
查看当前工作区的状况,是否有修改或者待提交的
git status
修改了readme但是还未add 或者 commit
查看做了什么修改
git diff readme.txt
查看历史的提交命令
git log
git log --pretty=oneline
查看git记录的每一次命令
git reflog
版本回退
git reset --hard HEAD^
git reset --hard HEAD^^
git reset --hard 1094a
所有的add操作,只是将文件添加进暂存区(stage)
在通过commit一次性提交
情况1
在工作区的文件中,增加了一些修改(并没有add和commit),但是没有被提交到暂存区
(可以先用git status查看文件的修改状态)
撤销在工作区做的任何修改
git checkout -- readme.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
情况2
在文件中增加了一些内容,并且git add到了暂存区
可以用git status 查看状态
step1:
把暂存区的修改退回到工作区(切换为增加了修改,但是没有执行git add的状态)
git reset HEAD readme.txt
step2:
回到了情况1,把工作区的修改撤销
删除文件
-
新建文件,并已经执行了add操作,提交到了暂存区
-
手动将目录下的test.txt文件删除,执行git status 会发现
-
确实要删除该文件
如果只是执行了add 操作 git rm test.txt 若果还进行了commit,则还需要执行 git commit -m "remove test.txt"
-
如果是误删除
用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
git checkout -- test.txt
远程仓库
建立起本地仓库和远程仓库的连接
本地Git仓库和Github仓库之间的传输是通过SSH加密
- 使用命令生成密钥和公钥(自己的github账户密码)
ssh-keygen -t rsa -C "youremail@example.com"
在用户主目录里找到.ssh
目录,
id_rsa
是私钥,不能泄露出去,
id_rsa.pub
是公钥
- 将公钥添加到github网站个人账户
登陆GitHub,打开“Account settings”,“SSH Keys”
先有本地库,再同步到远程库
- 再github上新建空白仓库,如
learngit
- 根据提示,在本地的
learngit
仓库下运行命令
git remote add origin git@github.com:【GitHub账户名】/learngit.git
- 把本地库所有内容推送到远程库
(第一次推送的时候使用以下命令)
git push -u origin master
- 以后的推送至远程
git push origin master
先有远程库,再同步到本地
- 在github上创建仓库,勾选自动创建README文件
- 在本地适当目录下打开git bash,运行
git clone git@github.com:【github账户名】/【git仓库名】.git
分支管理
创建并切换到dev分支
git branch dev
git checkout dev
git branch
切换分支
git checkout master
git switch -c dev 创建并切换到新的分支
git switch master 切换到已有的分支
合并分支,价格指定的分支合并到当前分支
git merge dev
合并后删除分支
git branch -d dev
分支合并可能会有冲突,造成合并失败
合并失败后,查看文件中的内容,会用
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
标记出每个分支的修改
在文件中修改冲突,后,再add commit即可
查看分支合并图
git log --graph
- 分支策略,禁用fast forword
强制禁用Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
git switch -c dev
git add readme.txt
git commit -m "add merge"
git switch master
git merge --no-ff -m "merge with no-ff" dev
git log --graph
git branch
git branch -d dev
远程仓库覆盖本地
git fetch --all
git reset --hard origin/master (这里master要修改为对应的分支名)
git pull
从远程仓库拉取指定分支到本地
命令:
git clone -b develop XXX
其中develop就是分支的名称
其他
用户名、账号密码设置
设置git软件绑定的用户名和邮箱账号
Git全局配置和单个仓库的用户名邮箱配置
- 配置全局仓库的账号和密码
git config --global user.name "userName" //你的用户名
git config --global user.email "email address" //你的邮箱地址
- 如果你的公司项目也放在git上面,为了不与个人账号的发生冲突,这时候需要给这个仓库单独设立账号和密码
进入到这个仓库里面,使用下面命令
git config user.name "userName" //你的用户名
git config user.email "email address" //你的邮箱地址
- 设置好账号和密码后
git config --list //查看git设置情况
已有本地仓库,将本地仓库关联远程仓库
本地已经是一个git仓库
- 添加本地仓库与远程仓库的关联
git remote add origin https://gitee.com/tangg9646/tests.git
- 查看本地仓库与远程仓库的关联
git remote -v
- 取消本地仓库与远程仓库的关联
git remote remove origin
- 如果初始化远程仓库的时候,生成了readme.md 需要先执行额外操作
git pull --rebase origin master
- 将本地仓库push到远程仓库
第一次提交(远程仓库为空)
git push -u origin master
第二次上传
git push origin master
git每次pull或push都要输入用户名和密码解决方法
git config --global credential.helper store
这个命令是在本地生成一个账号密码文件,这样就不用每次都输入了(但是还得输入一次)
这个指令对于windows,linux都是通用的!!!
可以通过命令
cat ~/.git-credentials
进行查看!