四个概念:
1. 工作目录:就是本地你的工作目录,里面是你的代码文件
2. 暂存区域:当你修改了你工作目录里的文件,通过git add的操作将修改的文件提交到暂存区域
3. 本地git版本库:当你想将当前的暂存区域做一次版本的保存,通过git commit操作将暂存区域的文件提交到本地git版本库
4. 远程git版本库:在git服务器上的git版本库,通过git push操作将你的本地git版本库合并到远程git版本库,这样别人就能看到你做的修改。或者通过git pull操作将远程git版本库合并到你的本地git版本库,来查看别人的修改。
安装git:
Linux下: sudo apt install git 安装git
Windows下:用vs2017下载git组件,然后在你的开始菜单里会有一个git bash。以下的操作用git bash完成
一.连接git服务器:
设置ssh公钥密钥,可以免密码登陆git账户
1. ssh-keygen -t rsa -C "username" (username为你的名字或主机名,然后一直回车)
2. scp ~/.ssh/id_rsa.pub [email protected]:~/ssh-pubkeys/username.pub
3. ssh [email protected] 通过ssh登陆git服务器
4. cat ~/ssh-pubkeys/username.pub | sudo tee -a /home/git/.ssh/authorized_keys
此时,你就可以免密码ssh登陆git账户了
5. exit 退出ssh登陆
二.关于git的操作
1. 配置git(配置一次即可)
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
配置你的名字和邮箱,这样当你push你的修改时,别人可以看到是谁的push
为了解决不同平台的换行符的问题做的配置(没有检验过,只是看网上说的):
对于windows系统: git config --global core.autocrlf true
对于linux系统:git config --global core.autocrlf input
可以通过git config --list命令查看当前配置
1. 查看提交信息
git log 可以查看每一次的commit信息(提交ID,提交人,提交时间,提交信息)
git log --oneline 查看每次简略的commit信息
2. 回退版本
git reset file-name 将你之前对名字为file-name的文件做的git add操作取消。
git reset --hard HEAD 将你的工作目录,暂存区域回退到上一次git commit
git reset --hard HEAD~n n为数字,表示回退n个版本(HEAD~1表示上上次commit)
git reset --hard commit-ID commit-ID可以用git log查看,可以精确的回退到某个 commit版本
以上的操作都是针对整个工作目录的回退,也可以对某个文件回退
git checkout commit-ID -- filename 即将名为filename的文件回退到该ID的commit版本
3. 比较,即显示更改的部分
git diff
比较工作目录和暂存区
git diff --cached
比较暂存区和上次提交
git diff HEAD
比较工作目录和上次提交
git diff commit-ID1 commit-ID2
比较两次版本的差异(commit-ID也可以用HEAD~n这样的形式替代)
完成以下示例你需要先完成上面的 一.连接git服务器 以及 二.关于git的操作中的 1. 配置git
关于目录结构的说明:
建议自己创建一个build目录,用于存放编译文件
Linux下:
1. git clone [email protected]:/git/template.git
2. cd template
3. mkdir build
4. cd build
5. cmake ..
该命令是根据CMakeLists.txt执行的,为了生成Makefile文件。当CMakeLists.txt文件没有修改时,以后不用再次执行
6. make
此时可执行文件cmake-template已在build目录下生成
make命令是根据Makefile文件来进行编译的任务,当你对源代码修改之后,需要执行该命令更新可执行文件
7. ./cmake-template
执行你编译的可执行文件
以上是将git服务器上的git版本库下载到本地并编译执行的操作
接下来是对代码修改,编译,执行成功后,更新到git服务器的操作
1. 修改代码
比如:打开src目录下的main.cpp文件,加上一句printf("helloword\n")
2. 编译
进入build目录,运行make命令
3. 执行
./cmake-template
你可以看到此时可执行文件的输出比之前多了一个helloword
4. 提交到本地git版本库
git add . 将修改内容添加到暂存区域
git commit -m "add helloword" 提交到本地git版本库,注释为add helloword
5. 更新到git服务器
git push origin master
如果git push遇到问题,查看 二.关于git的操作 的最后
1. 工作目录:就是本地你的工作目录,里面是你的代码文件
2. 暂存区域:当你修改了你工作目录里的文件,通过git add的操作将修改的文件提交到暂存区域
3. 本地git版本库:当你想将当前的暂存区域做一次版本的保存,通过git commit操作将暂存区域的文件提交到本地git版本库
4. 远程git版本库:在git服务器上的git版本库,通过git push操作将你的本地git版本库合并到远程git版本库,这样别人就能看到你做的修改。或者通过git pull操作将远程git版本库合并到你的本地git版本库,来查看别人的修改。
安装git:
Linux下: sudo apt install git 安装git
Windows下:用vs2017下载git组件,然后在你的开始菜单里会有一个git bash。以下的操作用git bash完成
一.连接git服务器:
设置ssh公钥密钥,可以免密码登陆git账户
1. ssh-keygen -t rsa -C "username" (username为你的名字或主机名,然后一直回车)
2. scp ~/.ssh/id_rsa.pub [email protected]:~/ssh-pubkeys/username.pub
3. ssh [email protected] 通过ssh登陆git服务器
4. cat ~/ssh-pubkeys/username.pub | sudo tee -a /home/git/.ssh/authorized_keys
此时,你就可以免密码ssh登陆git账户了
5. exit 退出ssh登陆
二.关于git的操作
1. 配置git(配置一次即可)
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
配置你的名字和邮箱,这样当你push你的修改时,别人可以看到是谁的push
为了解决不同平台的换行符的问题做的配置(没有检验过,只是看网上说的):
对于windows系统: git config --global core.autocrlf true
对于linux系统:git config --global core.autocrlf input
可以通过git config --list命令查看当前配置
git clone ......
将git服务器的仓库下载到本地,其中xxxx为仓库名字,如果不知道服务器中有哪些仓库,参照上一条(创建和查看远程仓库)
git status 查看各个文件的状态。多用几次就懂了。。。。
git add . 这条命令将所有改变过的文件添加到暂存区域
git commit -m "message" 提交所有暂存区域的文件到本地git版本库其中message为你对本次commit的描述
git push origin master 将本地git版本库合并到远程git版本库,其中master为分支名字。一般默认都是master分支
git push可能会遇到的问题:当远程git仓库被别人修改时,你的git push会冲突。此时你需要执行git pull命令,将此时远程git仓库合并到你的本地git仓库。若没有提示冲突的问题,你只需要再次git push origin master即可;若提示冲突,会提示你冲突的文件名,你需要查看该文件,修改,然后git commit,再git push origin master即可。
三.git的其他可能用到的操作1. 查看提交信息
git log 可以查看每一次的commit信息(提交ID,提交人,提交时间,提交信息)
git log --oneline 查看每次简略的commit信息
2. 回退版本
git reset file-name 将你之前对名字为file-name的文件做的git add操作取消。
git reset --hard HEAD 将你的工作目录,暂存区域回退到上一次git commit
git reset --hard HEAD~n n为数字,表示回退n个版本(HEAD~1表示上上次commit)
git reset --hard commit-ID commit-ID可以用git log查看,可以精确的回退到某个 commit版本
以上的操作都是针对整个工作目录的回退,也可以对某个文件回退
git checkout commit-ID -- filename 即将名为filename的文件回退到该ID的commit版本
3. 比较,即显示更改的部分
git diff
比较工作目录和暂存区
git diff --cached
比较暂存区和上次提交
git diff HEAD
比较工作目录和上次提交
git diff commit-ID1 commit-ID2
比较两次版本的差异(commit-ID也可以用HEAD~n这样的形式替代)
其他操作: http://www.yiibai.com/git/git-quick-start.html
完成以下示例你需要先完成上面的 一.连接git服务器 以及 二.关于git的操作中的 1. 配置git
关于目录结构的说明:
建议自己创建一个build目录,用于存放编译文件
Linux下:
1. git clone [email protected]:/git/template.git
2. cd template
3. mkdir build
4. cd build
5. cmake ..
该命令是根据CMakeLists.txt执行的,为了生成Makefile文件。当CMakeLists.txt文件没有修改时,以后不用再次执行
6. make
此时可执行文件cmake-template已在build目录下生成
make命令是根据Makefile文件来进行编译的任务,当你对源代码修改之后,需要执行该命令更新可执行文件
7. ./cmake-template
执行你编译的可执行文件
以上是将git服务器上的git版本库下载到本地并编译执行的操作
接下来是对代码修改,编译,执行成功后,更新到git服务器的操作
1. 修改代码
比如:打开src目录下的main.cpp文件,加上一句printf("helloword\n")
2. 编译
进入build目录,运行make命令
3. 执行
./cmake-template
你可以看到此时可执行文件的输出比之前多了一个helloword
4. 提交到本地git版本库
git add . 将修改内容添加到暂存区域
git commit -m "add helloword" 提交到本地git版本库,注释为add helloword
5. 更新到git服务器
git push origin master
如果git push遇到问题,查看 二.关于git的操作 的最后