开始我们自己的Git版本库
Git跟踪一组特定的在代码仓库(或简称“仓库”)中文件的更改。 我们开始用git管理自己的项目吧。 打开你的终端,进入 djangogirls 文件夹运行以下的命令:
注意 在初始化仓库之前,请使用 pwd命令 (OSX/Linux) 或者 cd (Windows) 命令检查你当前的工作目录。 你应该是在 djangogirls 文件夹下运行命令。
$ git init
Initialized empty Git repository in ~/djangogirls/.git/
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
每个项目我们只需要初始化一次Git仓库(而且你从此不需要重新输入用户名和邮箱)。
Git会追踪这个目录下所有文件和文件夹的更改,但是有一些文件我们希望Git忽略它。 为此,我们可以在系统根目录下创建一个命名为 .gitignore 的文件。 打开编辑器,创建新文件并写入以下内容:
*.pyc
__pycache__
myvenv
db.sqlite3
.DS_Store
然后在djangogirls项目根目录下保存为 .gitignore文件。
注意 在文件名最前面的”.”很重要。 如果你在创建文件的时候有困难(例如,Macs不能通过Finder创建开头为”.”的文件), 可以在编辑器里点击”另存为”, 这个没问题的。
在执行git操作之前,最好使用 git status 命令查看一下当前的状态,尤其是在执行 git add或者在你不确定哪些文件被改动的情况下。 这有助于阻止各种意外发生,例如错误的文件被添加或提交。 git status 命令会返回所有未追踪/修改/暂存的文件,还有分支状态等信息。 输出会是这样:
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
blog/
manage.py
mysite/
nothing added to commit but untracked files present (use "git add" to track)
最后保存我们的更改。转到你的控制台并运行这些命令:
$ git add --all .
$ git commit -m "My Django Girls app, first commit"
[...]
13 files changed, 200 insertions(+)
create mode 100644 .gitignore
[...]
create mode 100644 mysite/wsgi.py
推送我们的代码到Github上
现在我们需要把你电脑上的Git仓库和Github上的挂接。
在控制台输入以下内容(替换 为你的 github 用户名 ,不包含尖括号):
$ git remote add origin https://github.com/<your-github-username>/my-first-blog.git
$ git push -u origin master
输入你的Github账号名和密码,然后你会看到这样:
Username for 'https://github.com': hjwp
Password for 'https://hjwp@github.com':
Counting objects: 6, done.
Writing objects: 100% (6/6), 200 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/hjwp/my-first-blog.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
如何將檔案從stage移除?
網址:http://oomusou.io/git/git-remove-stage/
git將檔案分成三個階段 : working directory、stage與repository,要進repository之前,必須先進stage,但實務上可能下了git add之後,才反悔發現這個檔案不應該進stage,必須從stage移除,由於必須考慮該檔案是否已經存在於repository,所以必須下不同的git指令才能達成效果。
實務上常遇到一個狀況 : 當下了git add之後,才發現加錯檔案了,必須將檔案從stage移除。
一個看似很單純的需求,在git下卻要分兩個不同的狀況去思考:
若該檔案不在repository內 : git rm –cached 檔案名稱
若檔案已經在repository內 : git reset HEAD 檔案名稱