一、配置本地仓库
1、创建git版本库:
hgyy@ubuntu:~$ mkdir Git_Repository
hgyy@ubuntu:~/Git_Repository$ pwd
/home/hgyy/Git_Repository
git init命令把这个目录变成git可以管理的仓库
hgyy@ubuntu:~/Git_Repository$ git init
Initialized empty Git repository in /home/hgyy/Git_Repository/.git/
2、将文件提交到Git仓库
新建文件get_link_status.c并将其放在仓库目录下
第一步,用命令git add告诉Git,把文件添加到仓库暂存区(index):
hgyy@ubuntu:~/Git_Repository$ git add get_link_status.c
第二步,用命令git commit告诉Git,把文件提交到仓库(HEAD):
hgyy@ubuntu:~/Git_Repository$ git commit -m "the first time cubmit the code"
[master (root-commit) 53e540b] the first time cubmit the code
1 file changed, 74 insertions(+)
create mode 100755 get_link_status.c
简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
小结:
添加文件到Git仓库,分两步:
第二步,使用命令git commit,完成。
二、远程仓库
1、配置本地git
先在本地创建ssh key
$ ssh-keygen -t rsa -C "your_email@youremail.com"
之后一路回车车,成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key到github上的ssh keys里
验证下是否成功,在git bash里输入:
$ ssh -T git@github.com
接下来将本地仓库上传到GitHub上去,首先配置下本地的git
$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"
进入要上传的本地仓库,然后添加远程仓库地址:$ git remote add origin git@github.com:username/COMPAQ.git
添加完之后进入.git,打开config,这里会多出一个remote "origin"内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。
三、检出仓库
创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库。
执行如下命令以创建一个本地仓库的克隆版本:
git clone /path/to/repository
如果克隆远程仓库:
git clone username@host:/path/to/repository
四、工作流
1、本地仓库由 git 维护的三棵"树"组成
1.当前工作目录,具有实际的工程文件;
2. 暂存区(Index),它像个缓存区域,临时保存你的改动;
3.最后是 HEAD,它指向你最后一次提交的结果。
当对工程文件作出修改后,需要把修改先提交到暂存区:
git add <filename>
git add *
之后,使用如下命令以实际提交改动:
git commit -m "代码提交信息"
现在,改动已经提交到了 HEAD,但是还没提交到远端仓库。
2、推送修改到远端
git push origin master
master可以改为远端你想推送的任意分支3、替换本地改动
当本地工程工作时出现失误时,可以使用如下命令替换本地修改
git checkout -- <filename>
此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
git fetch origin
git reset --hard origin/master